package jcolibri.test.recomendador.presentacion;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.swing.JComboBox;

import jcolibri.cbrcore.Attribute;
import jcolibri.cbrcore.CBRCase;
import jcolibri.cbrcore.CaseComponent;
import jcolibri.method.retrieve.RetrievalResult;
import jcolibri.test.recomendador.datos.Movie;

public class PaginaPelis {
	private ArrayList<CBRCase> losCasos;
	private Collection<CBRCase> paginaActual;
	private int indice;
	Collection<CBRCase> casosOriginales;
	
	PaginaPelis(Collection<CBRCase> losCasos) {
		super();
		this.casosOriginales=losCasos;
		ArrayList<CBRCase> res = new ArrayList<CBRCase>();
		Iterator<CBRCase> cIter  =losCasos.iterator(); 
		for(int c=0; c<losCasos.size(); c++){
		    CBRCase cas=cIter.next();
		    cas.setSolution(new ElComboRating(((Movie)cas.getDescription()).getId(),c+1));
			res.add(cas);
		}
		indice=5;
		this.losCasos=res;
		paginaActual=new ArrayList();
		for (int k=0; k < indice; k++)
			paginaActual.add(res.get(k));
	}
	
	public Collection<CBRCase> paginaAnterior(){
		int i=(indice-1 )/ 5;
		indice=5*i;
		if (indice > 0){
		paginaActual=new ArrayList();
		for (int k=indice-5; k < indice; k++)
			paginaActual.add(losCasos.get(k));}
		return paginaActual;
	}
	
	public Collection<CBRCase> paginaSiguiente(){
		int superior;
		if (indice+5 <= losCasos.size())
			superior=indice+5;
		else
			superior=losCasos.size();
        paginaActual=new ArrayList();
		for (int k=indice; k < superior; k++)
			paginaActual.add(losCasos.get(k));
        indice=superior;
		return paginaActual;
	}

	public boolean hayPaginaSiguiente(){
		if (indice < losCasos.size())
			return true;
		else
			return false;
	}
	
	public boolean hayPaginaAnterior(){
		if (indice > 5 )
			return true;
		else
			return false;
	}
	public class ElComboRating implements CaseComponent{
		private int id;
		private JComboBox combo;
		private int orden;
		
		public ElComboRating(int id,int orden) {
			super();
			this.id = id;
			this.orden=orden;
			combo=new JComboBox();
			combo.addItem("NO la he visto");
			combo.addItem("1");
			combo.addItem("2");
			combo.addItem("3");
			combo.addItem("4");
			combo.addItem("5");
			combo.setSelectedIndex(0);
		}

		@Override
		
		public Attribute getIdAttribute()
	    {
			return new Attribute("id",ElComboRating.class);
	    }
		
		public int getId() {
			return id;
		}
		public void setId(int id) {
			this.id = id;
		}
		public JComboBox getCombo() {
			return combo;
		}
		public void setCombo(JComboBox combo) {
			this.combo = combo;
		}

		public int getOrden() {
			return orden;
		}

		public void setOrden(int orden) {
			this.orden = orden;
		}
		
	}




	public Collection<CBRCase> getPaginaActual() {
		return paginaActual;
	}



	public void setPaginaActual(Collection<CBRCase> paginaActual) {
		this.paginaActual = paginaActual;
	}



	public int getIndice() {
		return indice;
	}



	public void setIndice(int indice) {
		this.indice = indice;
	}

	public ArrayList<CBRCase> getLosCasos() {
		return losCasos;
	}

	public void setLosCasos(ArrayList<CBRCase> losCasos) {
		this.losCasos = losCasos;
	}

	public Collection<CBRCase> getCasosOriginales() {
		return casosOriginales;
	}

	public void setCasosOriginales(Collection<CBRCase> casosOriginales) {
		this.casosOriginales = casosOriginales;
	}
 	

}
